<?php

/**
 * Класс который занимается генерацией УРЛ-ов для событий
 *
 * @package default
 * @author Alexander Sibiryakov
 **/
class UrlGenThing
{
	public $router;
	private $db;
	
	private $communities = array();
	private $item_comm_oid = array();
	
	public function __construct(RL_RequestRouter $router, smallDBAL $db) {
		$this->router = $router;
		$this->db = $db;
	}
	
	public function createItemGen() {
		return new UrlGenItem($this);
	}
	
	public function createCommentGen() {
		return new UrlGenComment($this);		
	}
	
	public function getCommunityUrl($community_oid) {
		
		if (array_key_exists($community_oid, $this->communities)) {
			return $this->communities[$community_oid]['community_url'];
		}
		
		$sql = "SELECT * FROM store_objects WHERE store_objects.oid = ".$community_oid; //$hash['community_oid'];
		$rs = $this->db->query($sql);
		if ($rs) {
			$com = mysql_fetch_assoc($rs);
			mysql_free_result($rs);
			$com_hash = unserialize($com['data']);
			$com_url = $com_hash['community_url'];
			$this->communities[ $community_oid ] = $com_hash;
			return $com_url;
		}
		return false;
	}
	
	public function getCommunityUrlByItem($item_oid) {
		
		if (array_key_exists($item_oid, $this->item_comm_oid)) {
			return $this->getCommunityUrl($this->item_comm_oid[$item_oid]);
		}
		
		$sql = "SELECT community_oid FROM store_class_allfeed WHERE oid=".$item_oid." LIMIT 1";
		$rs = $this->db->query($sql);
		if ($rs) {
			$row2 = mysql_fetch_assoc($rs);
			mysql_free_result($rs);
			
			$this->item_comm_oid[ $item_oid ] = $row2['community_oid'];
		} else {
			return false;
		}
		
		return $this->getCommunityUrl($row2['community_oid']);
	}
	
	
	
} // END class 

interface UrlGen {
	public function genUrl(Array $params);
}

/*
Задача: чтобы где то хранились результаты предыдущих запросов, и второе - чтобы возвращались классы с одним и тем же 
интерфейсом для генерации урла клиентом
*/


?>